﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Sispe.Entities;
using System.Data;
using System.Data.Objects;

namespace Sispe.Repository
{
    public class TareoRepository : MasterRepository, ITareoRepository
    {
        public void AddTareoBorrador(TAREO_BORRADOR tareoBorrador)
        {
            context.TAREO_BORRADOR.Add(tareoBorrador);
            context.SaveChanges();
        }

        public void UpdateTareoBorrador(TAREO_BORRADOR tareoBorrador)
        {
            context.Entry(tareoBorrador).State = EntityState.Modified;
            context.SaveChanges();
        }

        public void DeleteTareoBorrador(int Id)
        {
            var existe = context.TAREO_BORRADOR.Where(p => p.Id.Equals(Id)).SingleOrDefault();
            if (existe != null)
            {
                context.TAREO_BORRADOR.Remove(existe);
                context.SaveChanges();
            }
        }

        public bool RegistroDuplicado(TAREO_BORRADOR tareoBorrador)
        {
            var query = from p in context.TAREO_BORRADOR
                        where p.EnrollNumber.CompareTo(tareoBorrador.EnrollNumber) == 0 &&
                        p.VerifyMode.Equals(tareoBorrador.VerifyMode) &&
                        p.InOutMode.Equals(tareoBorrador.InOutMode) &&
                        p.Date.Equals(tareoBorrador.Date) &&
                        p.WorkCode.Equals(tareoBorrador.WorkCode) &&
                        p.Reserved.Equals(tareoBorrador.Reserved) &&
                        p.Existe == tareoBorrador.Existe &&
                        p.Contrato == tareoBorrador.Contrato &&
                        p.Estado == tareoBorrador.Estado &&
                        p.Tareo == tareoBorrador.Tareo
                        select p;

            return query.Any();
        }

        public List<TAREO_BORRADOR> GetAllFromTareoBorrador()
        {
            var query = from p in context.TAREO_BORRADOR
                        select p;

            //ObjectContext.Refresh(RefreshMode.StoreWins, query);

            return query.ToList();
        }

        public List<TAREO_BORRADOR> TareoByDni(TAREO_BORRADOR tareoBorrador)
        {
            if (tareoBorrador.InOutMode == 0)
            {
                var hora1 = Convert.ToDateTime(tareoBorrador.Date.ToShortDateString() + " " + "00:00:00");
                var hora2 = Convert.ToDateTime(tareoBorrador.Date.ToShortDateString() + " " + "23:59:59");
                var query = from p in context.TAREO_BORRADOR
                            where p.EnrollNumber.CompareTo(tareoBorrador.EnrollNumber) == 0
                           && p.InOutMode.Equals(0)
                           && p.Date >= hora1
                           && p.Date <= hora2
                            orderby p.Date
                            select p;

                return query.ToList();
            }
            else if (tareoBorrador.InOutMode == 1)
            {
                var hora1 = Convert.ToDateTime(tareoBorrador.Date.ToShortDateString() + " " + "00:00:00");
                var hora2 = Convert.ToDateTime(tareoBorrador.Date.ToShortDateString() + " " + "23:59:59");
                var query = from p in context.TAREO_BORRADOR
                            where p.EnrollNumber.CompareTo(tareoBorrador.EnrollNumber) == 0
                           && p.InOutMode.Equals(1)
                           && p.Date >= hora1
                           && p.Date <= hora2
                            orderby p.Date
                            select p;

                return query.ToList();
            }
            else
            {
                var query = from p in context.TAREO_BORRADOR

                            select p;

                return query.ToList();
            }
        }

        public void AddTareo(TAREO tareo)
        {
            context.TAREOs.Add(tareo);
            context.SaveChanges();
        }

        public void UpdateTareo(TAREO tareo)
        {
            context.Entry(tareo).State = EntityState.Modified;
            context.SaveChanges();
        }

        public List<TAREO> GetAllFromTareo()
        {
            var query = from p in context.TAREOs
                        select p;

            //ObjectContext.Refresh(RefreshMode.StoreWins, query);

            return query.ToList();
        }
    }
}
